home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tools / packer / xfd / include / libraries / xfdmaster.i < prev   
Text File  |  1995-03-09  |  6KB  |  151 lines

  1.     IFND    LIBRARIES_XFDMASTER_I
  2. LIBRARIES_XFDMASTER_I    SET    1
  3.  
  4. **
  5. **    $VER: xfdmaster.i 34.1 (17.9.94)
  6. **
  7. **    Copyright © 1994 by Georg Hörmann
  8. **    All Rights Reserved
  9. **
  10.  
  11.     IFND EXEC_LIBRARIES_I
  12.     include "exec/libraries.i"
  13.     ENDC
  14.  
  15. ;======================================================================
  16. ; Library Base
  17. ;======================================================================
  18.  
  19.     STRUCTURE    xfdMasterBase,LIB_SIZE
  20.     ULONG    xfdm_SegList        ; PRIVATE
  21.     APTR    xfdm_DosBase
  22.     APTR    xfdm_FirstSlave
  23.     APTR    xfdm_FirstForeman    ; PRIVATE
  24.     LABEL    xfdMasterBase_SIZE
  25.  
  26. XFDM_VERSION    EQU    34    ;for OpenLibrary()
  27.  
  28. XFDM_NAME    MACRO
  29.         dc.b    "xfdmaster.library",0
  30.         ENDM
  31.  
  32. ;======================================================================
  33. ; Buffer Info
  34. ;======================================================================
  35.  
  36.     STRUCTURE    xfdBufferInfo,0
  37.     APTR    xfdbi_SourceBuffer    ; pointer to source buffer
  38.     ULONG    xfdbi_SourceBufLen    ; length of source buffer
  39.     APTR    xfdbi_Slave        ; PRIVATE
  40.     APTR    xfdbi_PackerName    ; name of recognized packer
  41.     UWORD    xfdbi_PackerFlags    ; flags for recognized packer
  42.     LABEL    xfdbi_MaxSpecialLen    ; max. length of special info (eg. password)
  43.     UWORD    xfdbi_Error        ; error return code
  44.     APTR    xfdbi_TargetBuffer    ; pointer to target buffer
  45.     ULONG    xfdbi_TargetBufMemType    ; memtype of target buffer
  46.     ULONG    xfdbi_TargetBufLen    ; full length of buffer
  47.     ULONG    xfdbi_TargetBufSaveLen    ; used length of buffer
  48.     ULONG    xfdbi_DecrAddress    ; address to load decrunched file
  49.     ULONG    xfdbi_JmpAddress    ; address to jump in file
  50.     APTR    xfdbi_Special        ; special decrunch info (eg. password)
  51.     LABEL    xfdBufferInfo_SIZE
  52.  
  53. ;======================================================================
  54. ; Segment Info
  55. ;======================================================================
  56.  
  57.     STRUCTURE    xfdSegmentInfo,0
  58.     ULONG    xfdsi_SegList        ; value received by LoadSeg()
  59.     APTR    xfdsi_Slave        ; PRIVATE
  60.     APTR    xfdsi_PackerName    ; name of recognized packer
  61.     UWORD    xfdsi_PackerFlags    ; flags for recognized packer
  62.     LABEL    xfdsi_MaxSpecialLen    ; max. length of special info (eg. password)
  63.     UWORD    xfdsi_Error        ; error return code
  64.     APTR    xfdsi_Special        ; special decrunch info (eg. password)
  65.     UWORD    xfdsi_RelMode        ; (V34) relocation mode
  66.     UWORD    xfdsi_Reserved0        ; (V34) reserved
  67.     LABEL    xfdSegmentInfo_SIZE
  68.  
  69. ;======================================================================
  70. ; Error Codes
  71. ;======================================================================
  72.  
  73. XFDERR_OK        EQU    $0000    ; no error
  74.  
  75. XFDERR_NOMEMORY        EQU    $0001    ; error allocating memory
  76. XFDERR_NOSLAVE        EQU    $0002    ; no slave entry in info structure
  77. XFDERR_NOTSUPPORTED    EQU    $0003    ; slave doesn't support called function
  78. XFDERR_UNKNOWN        EQU    $0004    ; unknown file
  79. XFDERR_NOSOURCE        EQU    $0005    ; no sourcebuffer/seglist specified
  80. XFDERR_WRONGPASSWORD    EQU    $0006    ; wrong password for decrunching
  81. XFDERR_BADHUNK        EQU    $0007    ; bad hunk structure
  82. XFDERR_CORRUPTEDDATA    EQU    $0008    ; crunched data is corrupted
  83. XFDERR_MISSINGRESOURCE    EQU    $0009    ; (V34) missing external resource (eg. libs)
  84.  
  85. XFDERR_UNDEFINEDHUNK    EQU    $1000    ; (V34) undefined hunk type
  86. XFDERR_NOHUNKHEADER    EQU    $1001    ; (V34) file is not executable
  87. XFDERR_BADEXTTYPE    EQU    $1002    ; (V34) bad hunk_ext type
  88. XFDERR_BUFFERTRUNCATED    EQU    $1003    ; (V34) unexpected end of file
  89. XFDERR_WRONGHUNKAMOUNT    EQU    $1004    ; (V34) wrong amount of hunks
  90.  
  91. XFDERR_UNSUPPORTEDHUNK    EQU    $2000    ; (V34) hunk type not supported
  92. XFDERR_BADRELMODE    EQU    $2001    ; (V34) unknown XFDREL_#? mode
  93.  
  94. ;======================================================================
  95. ; Relocation modes (V34)
  96. ;======================================================================
  97.  
  98. XFDREL_DEFAULT        EQU    $0000    ; use memory types given by hunk_header
  99. XFDREL_FORCECHIP    EQU    $0001    ; force all hunks to chip ram
  100. XFDREL_FORCEFAST    EQU    $0002    ; force all hunks to fast ram
  101.  
  102. ;======================================================================
  103. ; Values for xfd??_PackerFlags
  104. ;======================================================================
  105.  
  106.     BITDEF    XFDPF,RELOC,0        ; relocatible file packer
  107.     BITDEF    XFDPF,ADDR,1        ; absolute address file packer
  108.     BITDEF    XFDPF,DATA,2        ; data file packer
  109.  
  110.     BITDEF    XFDPF,PASSWORD,4    ; packer requires password
  111.     BITDEF    XFDPF,RELMODE,5        ; (V34) decruncher supports xfdsi_RelMode
  112.  
  113. ;======================================================================
  114. ; Foreman
  115. ;======================================================================
  116.  
  117.     STRUCTURE    xfdForeman,0
  118.     STRUCT    xfdf_Security,4        ; moveq #-1,d0 : rts
  119.     STRUCT    xfdf_ID,4        ; set to XFDF_ID
  120.     UWORD    xfdf_Version        ; set to XFDF_VERSION
  121.     UWORD    xfdf_Reserved        ; not used by now, set to NULL
  122.     ULONG    xfdf_Next        ; PRIVATE
  123.     ULONG    xfdf_SegList        ; PRIVATE
  124.     APTR    xfdf_FirstSlave        ; first slave (see below)
  125.     LABEL    xfdForeman_SIZE
  126.  
  127. XFDF_ID        EQU    (("X"<<24)!("F"<<16)!("D"<<8)!("F"))
  128. XFDF_VERSION    EQU    1
  129.  
  130. ;======================================================================
  131. ; Slave
  132. ;======================================================================
  133.  
  134.     STRUCTURE    xfdSlave,0
  135.     APTR    xfds_Next        ; next slave (or NULL)
  136.     UWORD    xfds_Version        ; set to XFDS_VERSION
  137.     UWORD    xfds_MasterVersion    ; minimum XFDM_VERSION required
  138.     APTR    xfds_PackerName        ; NULL-terminated name of packer
  139.     UWORD    xfds_PackerFlags    ; flags for packer
  140.     UWORD    xfds_MaxSpecialLen    ; max. length of special info (eg. password)
  141.     FPTR    xfds_RecogBuffer    ; buffer recognition code (or NULL)
  142.     FPTR    xfds_DecrunchBuffer    ; buffer decrunch code (or NULL)
  143.     FPTR    xfds_RecogSegment    ; segment recognition code (or NULL)
  144.     FPTR    xfds_DecrunchSegment    ; segment decrunch code (or NULL)
  145.     LABEL    xfdSlave_SIZE
  146.  
  147. XFDS_VERSION    EQU    1
  148.  
  149.  
  150.     ENDC    ; LIBRARIES_XFDMASTER_I
  151.